<?php
/**
 * 公共方法
 * Date: 2025/08/31
 */

if (!function_exists('getRandomNumber')) {
    /**
     * 获取随机数
     * @date 2025/08/31
     * @param int $length 长度
     * @return string
     */
    function getRandomNumber($length = 6)
    {
        $str = '';
        for ($i = 0; $i < $length; $i++) {
            if (empty($str)) {
                $str .= rand(1, 9);
            } else {
                $str .= rand(0, 9);
            }
        }
        return $str;
    }
}

if (!function_exists('getRandomString')) {
    /**
     * 获取随机字符串
     * @date 2025/08/31
     * @param int $length 长度
     * @return string
     */
    function getRandomString($length = 10)
    {
        $str = '';
        $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        for ($i = 0; $i < $length; $i++) {
            $str .= $chars[mt_rand(0, strlen($chars) - 1)];
        }
        return $str;
    }
}

if (!function_exists('buildTree')) {
    /**
     * 将平面数组转换为无限级树形结构
     * @param array $items 原始数组
     * @param string $idKey ID字段名
     * @param string $pidKey 父ID字段名，默认为'pid'
     * @param int $pid 父级ID，默认为0表示顶级
     * @return array 树形结构数组
     */
    function buildTree(array $items, $idKey, $pidKey = 'pid', $pid = 0)
    {
        $tree = [];
        foreach ($items as $item) {
            if ($item[$pidKey] == $pid) {
                // 递归查找子项
                $children = buildTree($items, $idKey, $pidKey, $item[$idKey]);
                if ($children) {
                    $item['children'] = $children;
                } else {
                    $item['children'] = [];
                }
                $tree[] = $item;
            }
        }
        return $tree;
    }
}
